Bidirectional Certified Programming
نویسندگان
چکیده
Certified programming is one of the desirable approaches to developing dependable software, where expected properties of programs are formally proved by proof assistants such as Coq. One way for certified programming with Coq is to define a function, give proofs for its properties in Coq, and then extract a program in OCaml. Another way for certified programming with Coq is to import the definition from OCaml and give proofs for its properties in Coq. Since translations in both methods are unidirectional, we can modify only either of Coq and OCaml. That makes it hard to develop large certified programs. To solve this problem, we propose a new framework for certified programming through bidirectional transformation between Coq functions and OCaml programs. In our system, one can develop certified programs by modifying both Coq functions and OCaml programs alternatingly. All updates of the OCaml program are reflected to the Coq function, and vice versa, while reusing as many parts of the original one as possible.
منابع مشابه
Bidirectional programming and its applications
Many problems in programming involve pairs of computations that cancel out each other’s effects; some examples include parsing/printing, embedding/projection, marshalling/unmarshalling, compressing/de-compressing etc. To avoid duplication of effort, the paradigm of bidirectional programming aims at to allow the programmer to write a single program that expresses both computations. Despite being...
متن کاملA Certified Refactoring Engine
The paper surveys how software tools such as refactoring systems can be validated, and introduces a new mechanism, namely the generation of a refactoring engine for a functional programming language from an Isabelle/HOL theory in which it is verified. This research is a first step in a programme to construct certified programming tools from verified theories. We also provide some empirical evid...
متن کاملComparing Techniques for Certified Static Analysis
A certified static analysis is an analysis whose semantic validity has been formally proved correct with a proof assistant. The recent increasing interest in using proof assistants for mechanizing programming language metatheory has given rise to several approaches for certification of static analysis. We propose a panorama of these techniques and compare their respective strengths and weaknesses.
متن کاملCertified Web Services in Ynot
In this paper we demonstrate that it is possible to implement certified web systems in a way not much different from writing Standard ML or Haskell code, including use of imperative features like pointers, files, and socket I/O. We present a web-based course gradebook application developed with Ynot, a Coq library for certified imperative programming. We add a dialog-based I/O system to Ynot, a...
متن کاملMODULARITY: U: Relations in Role-Based Data Modeling, Navigation and Updates
Object-oriented programming languages support concise navigation of relations represented by references. However, relations are not first-class citizens and bidirectional navigation is not supported. The relational paradigm provides first-class relations, but with bidirectional navigation through verbose queries. We present a systematic analysis of approaches to modeling and navigating relation...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2017